home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / doom / turric03.zip / TURRIC03.ZIP / PROGS / DEFS.QC < prev    next >
Text File  |  1997-02-06  |  24KB  |  872 lines

  1.  
  2. /*
  3. ==============================================================================
  4.  
  5.             SOURCE FOR GLOBALVARS_T C STRUCTURE
  6.  
  7. ==============================================================================
  8. */
  9.  
  10. //
  11. // system globals
  12. //
  13. entity        self;
  14. entity        other;
  15. entity        world;
  16. float        time;
  17. float        frametime;
  18.  
  19. float        force_retouch;        // force all entities to touch triggers
  20.                                 // next frame.  this is needed because
  21.                                 // non-moving things don't normally scan
  22.                                 // for triggers, and when a trigger is
  23.                                 // created (like a teleport trigger), it
  24.                                 // needs to catch everything.
  25.                                 // decremented each frame, so set to 2
  26.                                 // to guarantee everything is touched
  27. string        mapname;
  28.  
  29. float        deathmatch;
  30. float        coop;
  31. float        teamplay;
  32.  
  33. float        serverflags;        // propagated from level to level, used to
  34.                                 // keep track of completed episodes
  35.  
  36. float        total_secrets;
  37. float        total_monsters;
  38.  
  39. float        found_secrets;        // number of secrets found
  40. float        killed_monsters;    // number of monsters killed
  41.  
  42.  
  43. // spawnparms are used to encode information about clients across server
  44. // level changes
  45. float        parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
  46.  
  47. //
  48. // global variables set by built in functions
  49. //
  50. vector        v_forward, v_up, v_right;    // set by makevectors()
  51.  
  52. // set by traceline / tracebox
  53. float        trace_allsolid;
  54. float        trace_startsolid;
  55. float        trace_fraction;
  56. vector        trace_endpos;
  57. vector        trace_plane_normal;
  58. float        trace_plane_dist;
  59. entity        trace_ent;
  60. float        trace_inopen;
  61. float        trace_inwater;
  62.  
  63. entity        msg_entity;                // destination of single entity writes
  64.  
  65. //
  66. // required prog functions
  67. //
  68. void()         main;                        // only for testing
  69.  
  70. void()        StartFrame;
  71.  
  72. void()         PlayerPreThink;
  73. void()         PlayerPostThink;
  74.  
  75. void()        ClientKill;
  76. void()        ClientConnect;
  77. void()         PutClientInServer;        // call after setting the parm1... parms
  78. void()        ClientDisconnect;
  79.  
  80. void()        SetNewParms;            // called when a client first connects to
  81.                                     // a server. sets parms so they can be
  82.                                     // saved off for restarts
  83.  
  84. void()        SetChangeParms;            // call to set parms for self so they can
  85.                                     // be saved for a level transition
  86.  
  87.  
  88. //================================================
  89. void        end_sys_globals;        // flag for structure dumping
  90. //================================================
  91.  
  92. /*
  93. ==============================================================================
  94.  
  95.             SOURCE FOR ENTVARS_T C STRUCTURE
  96.  
  97. ==============================================================================
  98. */
  99.  
  100. //
  101. // system fields (*** = do not set in prog code, maintained by C code)
  102. //
  103. .float        modelindex;        // *** model index in the precached list
  104. .vector        absmin, absmax;    // *** origin + mins / maxs
  105.  
  106. .float        ltime;            // local time for entity
  107. .float        movetype;
  108. .float        solid;
  109.  
  110. .vector        origin;            // ***
  111. .vector        oldorigin;        // ***
  112. .vector        velocity;
  113. .vector        angles;
  114. .vector        avelocity;
  115.  
  116. .vector        punchangle;        // temp angle adjust from damage or recoil
  117.  
  118. .string        classname;        // spawn function
  119. .string        model;
  120. .float        frame;
  121. .float        skin;
  122. .float        effects;
  123.  
  124. .vector        mins, maxs;        // bounding box extents reletive to origin
  125. .vector        size;            // maxs - mins
  126.  
  127. .void()        touch;
  128. .void()        use;
  129. .void()        think;
  130. .void()        blocked;        // for doors or plats, called when can't push other
  131.  
  132. .float        nextthink;
  133. .entity        groundentity;
  134.  
  135. // stats
  136. .float        health;
  137. .float        frags;
  138. .float        weapon;            // one of the IT_SHOTGUN, etc flags
  139. .string        weaponmodel;
  140. .float        weaponframe;
  141. .float        currentammo;
  142. .float        ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
  143.  
  144. .float        items;            // bit flags
  145.  
  146. .float        takedamage;
  147. .entity        chain;
  148. .float        deadflag;
  149.  
  150. .vector        view_ofs;            // add to origin to get eye point
  151.  
  152.  
  153. .float        button0;        // fire
  154. .float        button1;        // use
  155. .float        button2;        // jump
  156.  
  157. .float        impulse;        // weapon changes
  158.  
  159. .float        fixangle;
  160. .vector        v_angle;        // view / targeting angle for players
  161. .float        idealpitch;        // calculated pitch angle for lookup up slopes
  162.  
  163.  
  164. .string        netname;
  165.  
  166. .entity     enemy;
  167.  
  168. .float        flags;
  169.  
  170. .float        colormap;
  171. .float        team;
  172.  
  173. .float        max_health;        // players maximum health is stored here
  174.  
  175. .float        teleport_time;    // don't back up
  176.  
  177. .float        armortype;        // save this fraction of incoming damage
  178. .float        armorvalue;
  179.  
  180. .float        waterlevel;        // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
  181. .float        watertype;        // a contents value
  182.  
  183. .float        ideal_yaw;
  184. .float        yaw_speed;
  185.  
  186. .entity        aiment;
  187.  
  188. .entity     goalentity;        // a movetarget or an enemy
  189.  
  190. .float        spawnflags;
  191.  
  192. .string        target;
  193. .string        targetname;
  194.  
  195. // damage is accumulated through a frame. and sent as one single
  196. // message, so the super shotgun doesn't generate huge messages
  197. .float        dmg_take;
  198. .float        dmg_save;
  199. .entity        dmg_inflictor;
  200.  
  201. .entity        owner;        // who launched a missile
  202. .vector        movedir;    // mostly for doors, but also used for waterjump
  203.  
  204. .string        message;        // trigger messages
  205.  
  206. .float        sounds;        // either a cd track number or sound number
  207.  
  208. .string        noise, noise1, noise2, noise3;    // contains names of wavs to play
  209.  
  210. //================================================
  211. void        end_sys_fields;            // flag for structure dumping
  212. //================================================
  213.  
  214. /*
  215. ==============================================================================
  216.  
  217.                 VARS NOT REFERENCED BY C CODE
  218.  
  219. ==============================================================================
  220. */
  221.  
  222.  
  223. //
  224. // constants
  225. //
  226.  
  227. float    FALSE                    = 0;
  228. float     TRUE                    = 1;
  229.  
  230. // edict.flags
  231. float    FL_FLY                    = 1;
  232. float    FL_SWIM                    = 2;
  233. float    FL_CLIENT                = 8;    // set for all client edicts
  234. float    FL_INWATER                = 16;    // for enter / leave water splash
  235. float    FL_MONSTER                = 32;
  236. float    FL_GODMODE                = 64;    // player cheat
  237. float    FL_NOTARGET                = 128;    // player cheat
  238. float    FL_ITEM                    = 256;    // extra wide size for bonus items
  239. float    FL_ONGROUND                = 512;    // standing on something
  240. float    FL_PARTIALGROUND        = 1024;    // not all corners are valid
  241. float    FL_WATERJUMP            = 2048;    // player jumping out of water
  242. float    FL_JUMPRELEASED            = 4096;    // for jump debouncing
  243.  
  244. // edict.movetype values
  245. float    MOVETYPE_NONE            = 0;    // never moves
  246. //float    MOVETYPE_ANGLENOCLIP    = 1;
  247. //float    MOVETYPE_ANGLECLIP        = 2;
  248. float    MOVETYPE_WALK            = 3;    // players only
  249. float    MOVETYPE_STEP            = 4;    // discrete, not real time unless fall
  250. float    MOVETYPE_FLY            = 5;
  251. float    MOVETYPE_TOSS            = 6;    // gravity
  252. float    MOVETYPE_PUSH            = 7;    // no clip to world, push and crush
  253. float    MOVETYPE_NOCLIP            = 8;
  254. float    MOVETYPE_FLYMISSILE        = 9;    // fly with extra size against monsters
  255. float    MOVETYPE_BOUNCE            = 10;
  256. float    MOVETYPE_BOUNCEMISSILE    = 11;    // bounce with extra size
  257.  
  258. // edict.solid values
  259. float    SOLID_NOT                = 0;    // no interaction with other objects
  260. float    SOLID_TRIGGER            = 1;    // touch on edge, but not blocking
  261. float    SOLID_BBOX                = 2;    // touch on edge, block
  262. float    SOLID_SLIDEBOX            = 3;    // touch on edge, but not an onground
  263. float    SOLID_BSP                = 4;    // bsp clip, touch on edge, block
  264.  
  265. // range values
  266. float    RANGE_MELEE                = 0;
  267. float    RANGE_NEAR                = 1;
  268. float    RANGE_MID                = 2;
  269. float    RANGE_FAR                = 3;
  270.  
  271. // deadflag values
  272.  
  273. float    DEAD_NO                    = 0;
  274. float    DEAD_DYING                = 1;
  275. float    DEAD_DEAD                = 2;
  276. float    DEAD_RESPAWNABLE        = 3;
  277.  
  278. // takedamage values
  279.  
  280. float    DAMAGE_NO                = 0;
  281. float    DAMAGE_YES                = 1;
  282. float    DAMAGE_AIM                = 2;
  283.  
  284. // items
  285. float    IT_AXE                    = 4096;
  286. float    IT_SHOTGUN                = 1;
  287. //** PATCH_BEGIN - grap109b - Turrican ****
  288. float   IT_MORNINGSTAR          = 129;  // Not to be used with .items, only with .weapon
  289. float    EXTRA_MORNINGSTAR        = 1;    // Extra weapon constant. Used with .extra_items
  290. //** PATCH_END - grap109b - Turrican ******
  291. //** PATCH_BEGIN - throwaxe ****
  292. float   IT_THROWING_AXE         = 130;
  293. float   EXTRA_THROWING_AXE        = 2;
  294. float   EXTRA_THROWING_AXES        = 4;
  295. //** PATCH_END - throwaxe ******
  296. //** PATCH_BEGIN - pipebombs - Turrican ****
  297. float   IT_PIPE_BOMBS            = 131;
  298. float    EXTRA_PIPE_BOMBS        = 8;
  299. //** PATCH_END - pipebombs - Turrican ******
  300. //** PATCH_BEGIN - tchwpn10 - Turrican ****
  301. float    IT_LASER                = 132;
  302. float    EXTRA_LASER                = 16;
  303. float    IT_SUPER_LASER            = 133;
  304. float    EXTRA_SUPER_LASER        = 32;
  305. //** PATCH_END - tchwpn10 - Turrican ******
  306. //** PATCH_BEGIN - flame thrower - Turrican ****
  307. float    IT_FLAMETHROWER            = 134;
  308. float    EXTRA_FLAMETHROWER        = 64;
  309. //** PATCH_END - flame thrower - Turrican ******
  310. //** PATCH_BEGIN - tracbeam ****
  311. float    IT_TRACTOR_BEAM            = 135;
  312. float    EXTRA_TRACTOR_BEAM        = 128;
  313. //** PATCH_END - tracbeam ******
  314. //** PATCH_BEGIN - extra weapons - Turrican ****
  315. float    EXTRA_NO_WEAPON            = 4194304;
  316. //** PATCH_END - extra weapons - Turrican ******
  317. float    IT_SUPER_SHOTGUN        = 2;
  318. float    IT_NAILGUN                = 4;
  319. float    IT_SUPER_NAILGUN        = 8;
  320. float    IT_GRENADE_LAUNCHER        = 16;
  321. float    IT_ROCKET_LAUNCHER        = 32;
  322. float    IT_LIGHTNING            = 64;
  323. float    IT_EXTRA_WEAPON            = 128;
  324.  
  325. float    IT_SHELLS                = 256;
  326. float    IT_NAILS                = 512;
  327. float    IT_ROCKETS                = 1024;
  328. float    IT_CELLS                = 2048;
  329.  
  330. float    IT_ARMOR1                = 8192;
  331. float    IT_ARMOR2                = 16384;
  332. float    IT_ARMOR3                = 32768;
  333. float    IT_SUPERHEALTH            = 65536;
  334.  
  335. float    IT_KEY1                    = 131072;
  336. float    IT_KEY2                    = 262144;
  337.  
  338. float    IT_INVISIBILITY            = 524288;
  339. float    IT_INVULNERABILITY        = 1048576;
  340. float    IT_SUIT                    = 2097152;
  341. float    IT_QUAD                    = 4194304;
  342.  
  343. // point content values
  344.  
  345. float    CONTENT_EMPTY            = -1;
  346. float    CONTENT_SOLID            = -2;
  347. float    CONTENT_WATER            = -3;
  348. float    CONTENT_SLIME            = -4;
  349. float    CONTENT_LAVA            = -5;
  350. float    CONTENT_SKY                = -6;
  351.  
  352. float    STATE_TOP        = 0;
  353. float    STATE_BOTTOM    = 1;
  354. float    STATE_UP        = 2;
  355. float    STATE_DOWN        = 3;
  356.  
  357. vector    VEC_ORIGIN = '0 0 0';
  358. vector    VEC_HULL_MIN = '-16 -16 -24';
  359. vector    VEC_HULL_MAX = '16 16 32';
  360.  
  361. vector    VEC_HULL2_MIN = '-32 -32 -24';
  362. vector    VEC_HULL2_MAX = '32 32 64';
  363.  
  364. // protocol bytes
  365. float    SVC_TEMPENTITY        = 23;
  366. float    SVC_KILLEDMONSTER    = 27;
  367. float    SVC_FOUNDSECRET        = 28;
  368. float    SVC_INTERMISSION    = 30;
  369. float    SVC_FINALE            = 31;
  370. float    SVC_CDTRACK            = 32;
  371. float    SVC_SELLSCREEN        = 33;
  372.  
  373.  
  374. float    TE_SPIKE        = 0;
  375. float    TE_SUPERSPIKE    = 1;
  376. float    TE_GUNSHOT        = 2;
  377. float    TE_EXPLOSION    = 3;
  378. float    TE_TAREXPLOSION    = 4;
  379. float    TE_LIGHTNING1    = 5;
  380. float    TE_LIGHTNING2    = 6;
  381. float    TE_WIZSPIKE        = 7;
  382. float    TE_KNIGHTSPIKE    = 8;
  383. float    TE_LIGHTNING3    = 9;
  384. float    TE_LAVASPLASH    = 10;
  385. float    TE_TELEPORT        = 11;
  386.  
  387. // sound channels
  388. // channel 0 never willingly overrides
  389. // other channels (1-7) allways override a playing sound on that channel
  390. float    CHAN_AUTO        = 0;
  391. float    CHAN_WEAPON        = 1;
  392. float    CHAN_VOICE        = 2;
  393. float    CHAN_ITEM        = 3;
  394. float    CHAN_BODY        = 4;
  395.  
  396. float    ATTN_NONE        = 0;
  397. float    ATTN_NORM        = 1;
  398. float    ATTN_IDLE        = 2;
  399. float    ATTN_STATIC        = 3;
  400.  
  401. // update types
  402.  
  403. float    UPDATE_GENERAL    = 0;
  404. float    UPDATE_STATIC    = 1;
  405. float    UPDATE_BINARY    = 2;
  406. float    UPDATE_TEMP        = 3;
  407.  
  408. // entity effects
  409.  
  410. float    EF_BRIGHTFIELD    = 1;
  411. float    EF_MUZZLEFLASH     = 2;
  412. float    EF_BRIGHTLIGHT     = 4;
  413. float    EF_DIMLIGHT     = 8;
  414.  
  415.  
  416. // messages
  417. float    MSG_BROADCAST    = 0;        // unreliable to all
  418. float    MSG_ONE            = 1;        // reliable to one (msg_entity)
  419. float    MSG_ALL            = 2;        // reliable to all
  420. float    MSG_INIT        = 3;        // write to the init string
  421.  
  422. //================================================
  423.  
  424. //
  425. // globals
  426. //
  427. float    movedist;
  428. float    gameover;        // set when a rule exits
  429.  
  430. string    string_null;    // null string, nothing should be held here
  431. float    empty_float;
  432.  
  433. entity    newmis;            // launch_spike sets this after spawning it
  434.  
  435. entity    activator;        // the entity that activated a trigger or brush
  436.  
  437. entity    damage_attacker;    // set by T_Damage
  438. float    framecount;
  439.  
  440. float        skill;
  441.  
  442. //================================================
  443.  
  444. //
  445. // world fields (FIXME: make globals)
  446. //
  447. .string        wad;
  448. .string     map;
  449. .float        worldtype;    // 0=medieval 1=metal 2=base
  450.  
  451. //================================================
  452.  
  453. .string        killtarget;
  454.  
  455. //
  456. // quakeed fields
  457. //
  458. .float        light_lev;        // not used by game, but parsed by light util
  459. .float        style;
  460.  
  461.  
  462. //
  463. // monster ai
  464. //
  465. .void()        th_stand;
  466. .void()        th_walk;
  467. .void()        th_run;
  468. .void()        th_missile;
  469. .void()        th_melee;
  470. .void(entity attacker, float damage)        th_pain;
  471. .void()        th_die;
  472.  
  473. .entity        oldenemy;        // mad at this player before taking damage
  474.  
  475. .float        speed;
  476.  
  477. .float    lefty;
  478.  
  479. .float    search_time;
  480. .float    attack_state;
  481.  
  482. //** PATCH_BEGIN - gibbin3 - Turrican ****
  483. // Added for passing parameters to the Corpse_die function.
  484. .float    corpse_size;
  485. .float  corpse_time;
  486. .string    head_gib_name;
  487.  
  488. // Size of a corpse.
  489. float     SIZE_SMALL    = 1;
  490. float    SIZE_MEDIUM = 2;
  491. float    SIZE_LARGE  = 3;
  492.  
  493. float    HEAD_HEALTH = 20;    // Health to use for heads
  494. float   GIB_HEALTH = 20;
  495. //** PATCH_END - gibbin3 - Turrican ******
  496.  
  497. float    AS_STRAIGHT        = 1;
  498. float    AS_SLIDING        = 2;
  499. float    AS_MELEE        = 3;
  500. float    AS_MISSILE        = 4;
  501.  
  502. //
  503. // player only fields
  504. //
  505. .float        walkframe;
  506.  
  507. .float         attack_finished;
  508. .float        pain_finished;
  509.  
  510. //** PATCH_BEGIN - grap109b - Turrican ****
  511. .float      hook_out;
  512. .float        prev_weapon;    // for toggling morningstar.
  513. //** PATCH_END - grap109b - Turrican ******
  514.  
  515. .float        invincible_finished;
  516. .float        invisible_finished;
  517. .float        super_damage_finished;
  518. .float        radsuit_finished;
  519.  
  520. .float        invincible_time, invincible_sound;
  521. .float        invisible_time, invisible_sound;
  522. .float        super_time, super_sound;
  523. .float        rad_time;
  524. .float        fly_sound;
  525.  
  526. .float        axhitme;
  527.  
  528. .float        show_hostile;    // set to time+0.2 whenever a client fires a
  529.                             // weapon or takes damage.  Used to alert
  530.                             // monsters that otherwise would let the player go
  531. .float        jump_flag;        // player jump flag
  532. .float        swim_flag;        // player swimming sound flag
  533. .float        air_finished;    // when time > air_finished, start drowning
  534. .float        bubble_count;    // keeps track of the number of bubbles
  535. .string        deathtype;        // keeps track of how the player died
  536.  
  537. //** PATCH_BEGIN - grap109b - Turrican ****
  538. .float        extra_items;    // Bit flags for extra items. May only be used with extra item constants.
  539. //** PATCH_END - grap109b - Turrican ******
  540.  
  541. //
  542. // object stuff
  543. //
  544. .string        mdl;
  545. .vector        mangle;            // angle at start
  546.  
  547. .vector        oldorigin;        // only used by secret door
  548.  
  549. .float        t_length, t_width;
  550.  
  551.  
  552. //
  553. // doors, etc
  554. //
  555. .vector        dest, dest1, dest2;
  556. .float        wait;            // time from firing to restarting
  557. .float        delay;            // time from activation to firing
  558. .entity        trigger_field;    // door's trigger entity
  559. .string        noise4;
  560.  
  561. //
  562. // monsters
  563. //
  564. .float         pausetime;
  565. .entity     movetarget;
  566.  
  567. //** PATCH_BEGIN - gibbin3 - Turrican ****
  568. .float        get_off_zombie;        // used for pushing the player off of rising zombies.
  569. //** PATCH_END - gibbin3 - Turrican ******
  570.  
  571. //** PATCH_BEGIN - grap109b ****
  572. .float      hooked;
  573. //** PATCH_END - grap109b ******
  574.  
  575. //
  576. // doors
  577. //
  578. .float        aflag;
  579. .float        dmg;            // damage done by door when hit
  580.     
  581. //
  582. // misc
  583. //
  584. .float        cnt;             // misc flag
  585.     
  586. //
  587. // subs
  588. //
  589. .void()        think1;
  590. .vector        finaldest, finalangle;
  591.  
  592. //
  593. // triggers
  594. //
  595. .float        count;            // for counting triggers
  596.  
  597.  
  598. //
  599. // plats / doors / buttons
  600. //
  601. .float        lip;
  602. .float        state;
  603. .vector        pos1, pos2;        // top and bottom positions
  604. .float        height;
  605.  
  606. //
  607. // sounds
  608. //
  609. .float        waitmin, waitmax;
  610. .float        distance;
  611. .float        volume;
  612.  
  613.  
  614.  
  615.  
  616. //===========================================================================
  617.     
  618.  
  619. //
  620. // builtin functions
  621. //
  622.  
  623. void(vector ang)    makevectors        = #1;        // sets v_forward, etc globals
  624. void(entity e, vector o) setorigin    = #2;
  625. void(entity e, string m) setmodel    = #3;        // set movetype and solid first
  626. void(entity e, vector min, vector max) setsize = #4;
  627. // #5 was removed
  628. void() break                        = #6;
  629. float() random                        = #7;        // returns 0 - 1
  630. void(entity e, float chan, string samp, float vol, float atten) sound = #8;
  631. vector(vector v) normalize            = #9;
  632. void(string e) error                = #10;
  633. void(string e) objerror                = #11;
  634. float(vector v) vlen                = #12;
  635. float(vector v) vectoyaw            = #13;
  636. entity() spawn                        = #14;
  637. void(entity e) remove                = #15;
  638.  
  639. // sets trace_* globals
  640. // nomonsters can be:
  641. // An entity will also be ignored for testing if forent == test,
  642. // forent->owner == test, or test->owner == forent
  643. // a forent of world is ignored
  644. void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;    
  645.  
  646. entity() checkclient                = #17;    // returns a client to look for
  647. entity(entity start, .string fld, string match) find = #18;
  648. string(string s) precache_sound        = #19;
  649. string(string s) precache_model        = #20;
  650. void(entity client, string s)stuffcmd = #21;
  651. entity(vector org, float rad) findradius = #22;
  652. void(string s) bprint                = #23;
  653. void(entity client, string s) sprint = #24;
  654. void(string s) dprint                = #25;
  655. string(float f) ftos                = #26;
  656. string(vector v) vtos                = #27;
  657. void() coredump                        = #28;        // prints all edicts
  658. void() traceon                        = #29;        // turns statment trace on
  659. void() traceoff                        = #30;
  660. void(entity e) eprint                = #31;        // prints an entire edict
  661. float(float yaw, float dist) walkmove    = #32;    // returns TRUE or FALSE
  662. // #33 was removed
  663. float(float yaw, float dist) droptofloor= #34;    // TRUE if landed on floor
  664. void(float style, string value) lightstyle = #35;
  665. float(float v) rint                    = #36;        // round to nearest int
  666. float(float v) floor                = #37;        // largest integer <= v
  667. float(float v) ceil                    = #38;        // smallest integer >= v
  668. // #39 was removed
  669. float(entity e) checkbottom            = #40;        // true if self is on ground
  670. float(vector v) pointcontents        = #41;        // returns a CONTENT_*
  671. // #42 was removed
  672. float(float f) fabs = #43;
  673. vector(entity e, float speed) aim = #44;        // returns the shooting vector
  674. float(string s) cvar = #45;                        // return cvar.value
  675. void(string s) localcmd = #46;                    // put string into local que
  676. entity(entity e) nextent = #47;                    // for looping through all ents
  677. void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
  678. void() ChangeYaw = #49;                        // turn towards self.ideal_yaw
  679.                                             // at self.yaw_speed
  680. // #50 was removed
  681. vector(vector v) vectoangles            = #51;
  682.  
  683. //
  684. // direct client message generation
  685. //
  686. void(float to, float f) WriteByte        = #52;
  687. void(float to, float f) WriteChar        = #53;
  688. void(float to, float f) WriteShort        = #54;
  689. void(float to, float f) WriteLong        = #55;
  690. void(float to, float f) WriteCoord        = #56;
  691. void(float to, float f) WriteAngle        = #57;
  692. void(float to, string s) WriteString    = #58;
  693. void(float to, entity s) WriteEntity    = #59;
  694.  
  695. //
  696. // broadcast client message generation
  697. //
  698.  
  699. // void(float f) bWriteByte        = #59;
  700. // void(float f) bWriteChar        = #60;
  701. // void(float f) bWriteShort        = #61;
  702. // void(float f) bWriteLong        = #62;
  703. // void(float f) bWriteCoord        = #63;
  704. // void(float f) bWriteAngle        = #64;
  705. // void(string s) bWriteString    = #65;
  706. // void(entity e) bWriteEntity = #66;
  707.  
  708. void(float step) movetogoal                = #67;
  709.  
  710. string(string s) precache_file        = #68;    // no effect except for -copy
  711. void(entity e) makestatic        = #69;
  712. void(string s) changelevel = #70;
  713.  
  714. //#71 was removed
  715.  
  716. void(string var, string val) cvar_set = #72;    // sets cvar.value
  717.  
  718. void(entity client, string s) centerprint = #73;    // sprint, but in middle
  719.  
  720. void(vector pos, string samp, float vol, float atten) ambientsound = #74;
  721.  
  722. string(string s) precache_model2    = #75;        // registered version only
  723. string(string s) precache_sound2    = #76;        // registered version only
  724. string(string s) precache_file2        = #77;        // registered version only
  725.  
  726. void(entity e) setspawnparms        = #78;        // set parm1... to the
  727.                                                 // values at level start
  728.                                                 // for coop respawn
  729.  
  730. //============================================================================
  731.  
  732. //
  733. // subs.qc
  734. //
  735. void(vector tdest, float tspeed, void() func) SUB_CalcMove;
  736. void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt;
  737. void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove;
  738. void()  SUB_CalcMoveDone;
  739. void() SUB_CalcAngleMoveDone;
  740. void() SUB_Null;
  741. void() SUB_UseTargets;
  742. void() SUB_Remove;
  743.  
  744. //
  745. //    combat.qc
  746. //
  747. void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
  748.  
  749.  
  750. float (entity e, float healamount, float ignore) T_Heal; // health function
  751.  
  752. float(entity targ, entity inflictor) CanDamage;
  753.  
  754. //** PATCH_BEGIN - throwaxe ****
  755. .float num_axes;
  756. .float num_bounces;
  757. //** PATCH_END - throwaxe ******
  758.  
  759. //** PATCH_BEGIN - morph2 ****
  760. .void() _stand;
  761. .void(entity attacker, float take) _pain;
  762. .void() _run;
  763. .void() _impulse;
  764. .void() _attack;
  765. .void() _jump;
  766. .void() _jump2;
  767. //** PATCH_BEGIN - morph2 - Turrican ****
  768. .void() _die;
  769. //** PATCH_END - morph2 - Turrican ******
  770. .float morphnum;
  771. .float(entity what, entity you) _can_get_p;
  772. .float modelindex_morph;
  773. .float health_modifier;
  774. .string(entity targ, entity attacker) _killmsg;
  775. .string(entity targ, entity attacker) _killmsg2;
  776. //** PATCH_END - morph2 ******
  777.  
  778. //** PATCH_BEGIN - morph2 - Turrican ****
  779. // Values for self.morphnum
  780.  
  781. float    M_HUMAN     = 0;
  782. float    M_ZOMBIE     = 1;
  783. float    M_SHALRATH     = 2;
  784. float    M_WIZARD     = 3;
  785. float    M_HKNIGHT     = 4;
  786. float    M_SHAMBLER     = 5;
  787. float    M_DEMON     = 6;
  788. float    M_OGRE         = 7;
  789.  
  790. // Morph weapons.
  791. // demon
  792. float    DEMON_SLASH_L         = 1;
  793. float    DEMON_SLASH_R         = 2;
  794. float    DEMON_SLASH_LR        = 4;
  795.  
  796. // hell knight
  797. float    HKNIGHT_SWORD_SINGLE= 1;
  798. float    HKNIGHT_SWORD_DOUBLE= 2;
  799. float    HKNIGHT_SWORD_SLICE    = 4;
  800. float    HKNIGHT_SWORD_SMASH    = 8;
  801. float    HKNIGHT_MISS_RL        = 16;
  802. float    HKNIGHT_MISS_DOWN    = 32;
  803. float    HKNIGHT_MISS_STRAIGHT    = 64;
  804.  
  805. // ogre
  806. float    OGRE_CHAINSAW_SWING    = 1;
  807. float    OGRE_CHAINSAW_SMASH    = 2;
  808. float    OGRE_GRENADES         = 4;
  809.  
  810. // shalrath
  811. float    VORE_HOMING_MISSILE = 1;
  812.  
  813. // shambler
  814. float    SHAMBLER_SWING_LEFT     = 1;
  815. float    SHAMBLER_SWING_RIGHT     = 2;
  816. float    SHAMBLER_SWING_RL         = 4;
  817. float    SHAMBLER_SMASH            = 8;
  818. float    SHAMBLER_LIGHTNING         = 16;
  819.  
  820. // wizard
  821. float    WIZARD_MISSILES        = 1;
  822.  
  823. // zombie
  824. float    ZOMBIE_GIBS         = 1;
  825.  
  826. .float    temp_colormap;        // Stores players colormap no. while players are not human.
  827. .float    temp_skin;          // Stores players skin no. while players are not human.
  828. //** PATCH_END - morph2 - Turrican ******
  829.  
  830. //** PATCH_BEGIN - grenades - Turrican ****
  831. .float    grenade_time;
  832. //** PATCH_END - grenades - Turrican ******
  833.  
  834. //** PATCH_BEGIN - flame thrower - Turrican ****
  835. .float     onfire;
  836. .float    alivetime;
  837. .float  rocket_fuel;
  838. .float  burncounter;
  839. .vector    base_point;        // offset from owners origin for the point for the flame to burn above.
  840.  
  841. float    FLAME_DAMAGE = 5;
  842. //** PATCH_END - flame thrower - Turrican ******
  843.  
  844. //** PATCH_BEGIN - temporary entity limiting - Turrican ****
  845. // Used for limiting the number of temporary entities to stop packet
  846. // overflows and "no free edicts" crashes.
  847. // Limited entities: gibs - incremented in Throwgib() and Throwhead() in
  848. //                            player.qc, and HeadDie() in corpse.qc
  849. //                     flames - incremented in SpawnFlame() in flame.qc
  850. //                     All are decremented in SUB_RemoveTempEnt() in jsubs.qc
  851. //
  852. float    MAX_TEMP_ENTITIES = 50;
  853. float    current_temp_entities;
  854. float    current_flame_bubbles;
  855. //** PATCH_END - temporary entity limiting - Turrican ******
  856.  
  857. //** PATCH_BEGIN - tracbeam - Turrican ****
  858. .float    tracbeam_status;
  859. .float    tracbeam_time;
  860. .float    tracbeam_length;
  861. .entity    victim;
  862.  
  863. float    TRACBEAM_ON             = 1;
  864. float    TRACBEAM_OFF            = 0;
  865. float    TRACBEAM_LEN             = 600;
  866. //** PATCH_END - tracbeam - Turrican ******
  867.  
  868. //** PATCH_BEGIN - quickfire - Turrican ****
  869. .float    quickfire;
  870. //** PATCH_END - quickfire - Turrican ******
  871.  
  872.